﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using ManagerProject.ClientesManagement;
using Support.IOC;
using ModelProject.Entities;
using ManagerProject.TiposDocumentosManagement;
using ModelProject.DTOs;

namespace AplicacionEjemplo
{
    public partial class Form1 : Form
    {
        IClientesManager clientesManager = IOCContainerFactory.Instance.CurrentContainer.Resolve<IClientesManager>();

        public Form1()
        {
            InitializeComponent();
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            LoadGrid();
            LoadCombos();
        }

        private void btnAceptar_Click(object sender, EventArgs e)
        {
            Cliente cliente = new Cliente();
            cliente.ClienteId = (string.IsNullOrEmpty(txtId.Text) ? 0 : int.Parse(txtId.Text));
            cliente.Nombre = txtNombre.Text;
            cliente.Apellido = txtApellido.Text;
            cliente.NroDocumento = int.Parse(txtNroDocumento.Text);
            cliente.TipoDocumentoId = int.Parse(cbTipoDocumento.SelectedValue.ToString());

            clientesManager.SaveCliente(cliente);
            LoadGrid();

            string mensaje = cliente.ClienteId == 0?"Cliente creado correctamente":"Cliente actualizado correctamente";
            MessageBox.Show(mensaje);
        }

        private void LoadGrid()
        {
            dataGridView1.AutoGenerateColumns = false;
            dataGridView1.DataSource = clientesManager.GetClientesDTO(); ;
        }

        private void LoadCombos()
        {
            ITiposDocumentosManager tiposDocumentosManager = IOCContainerFactory.Instance.CurrentContainer.Resolve<ITiposDocumentosManager>();
            cbTipoDocumento.DisplayMember = "Descripcion";
            cbTipoDocumento.ValueMember = "TipoDocumentoId";
            cbTipoDocumento.DataSource = tiposDocumentosManager.GetTiposDocumentos();
            
        }

        private void dataGridView1_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            ClienteDTO cliente = clientesManager.GetClienteDTOById(int.Parse(dataGridView1.Rows[e.RowIndex].Cells[0].Value.ToString()));
            txtId.Text = cliente.ClienteId.ToString();
            txtApellido.Text = cliente.Apellido;
            txtNombre.Text = cliente.Nombre;
            txtNroDocumento.Text = cliente.NroDocumento.ToString();
            cbTipoDocumento.SelectedValue = cliente.TipoDocumentoId;
        }

        private void dataGridView1_CellContentClick(object sender, DataGridViewCellEventArgs e)
        {

        }

        private void btnNuevo_Click(object sender, EventArgs e)
        {
            txtApellido.Text = string.Empty;
            txtId.Text = string.Empty;
            txtNombre.Text = string.Empty;
            txtNroDocumento.Text = string.Empty;
        }
    }
}
